package ws.jdbc.concurrent.driver.sqlserver.tds

import ws.jdbc.concurrent.driver.sqlserver.tds.TokenReader
import ws.utils.io.LittleEndianDataInputStream

/**
 *
 * @author Wilson Santos, 36228 <wilson.santos@ua.pt>
 */
class RPCResponseTokenTest extends CommonOfflineTest {

  void testReadRPCTokens() {
    println "testReadRPCTokens()"

    def data = [
      // <COLMETADATA_TOKEN>
      0x81, 0x02, 0x00,
      0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0xa7, 0x03, 0x00, 0x09, 0x04, 0xd0,
      0x00, 0x34, 0x03, 0x62, 0x00, 0x61, 0x00, 0x72, 0x00,
      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x07, 0x52, 0x00, 0x4f, 0x00,
      0x57, 0x00, 0x53, 0x00, 0x54, 0x00, 0x41, 0x00, 0x54, 0x00,
      // </COLMETADATA_TOKEN>

      // <COLINFO_TOKEN>
      0xa5, 0x06, 0x00, 0x01, 0x00, 0x04, 0x02, 0x00, 0x14,
      // </COLINFO_TOKEN>

      // <DONEINPROC_TOKEN>
      0xff, 0x11, 0x00, 0xc1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
      // </DONEINPROC_TOKEN>

      // <RETURNSTATUS_TOKEN>
      0x79, 0x00, 0x00, 0x00, 0x00,
      // </RETURNSTATUS_TOKEN>

      // <RETURNVALUE_TOKEN>
      0xac, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x26, 
      0x04, 0x04, 0xf3, 0xde, 0xbc, 0x0a, 0xac, 0x02, 0x00, 0x00, 0x01, 0x00,
      0x00, 0x00, 0x00, 0x00, 0x00, 0x26, 0x04, 0x04, 0x08, 0x00, 0x00, 0x00,
      // </RETURNVALUE_TOKEN>

      // <RETURNVALUE_TOKEN>
      0xac, 0x03, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x26,
      0x04, 0x04, 0x01, 0x00, 0x00, 0x00,
      // </RETURNVALUE_TOKEN>
      
      // <RETURNVALUE_TOKEN>
      0xac, 0x04, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x26,
      0x04, 0x04, 0x01, 0x00, 0x00, 0x00,
      // </RETURNVALUE_TOKEN>

      // <DONEPROC_TOKEN>
      0xfe, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
      // </DONEPROC_TOKEN>
    ] as Byte[]

    sendData(data)
    def is = receiveData()

    def collection = TokenReader.readTokens(is, data.size())
    println collection
  }
}

